#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""CSV雪票数据处理系统 - 执行脚本
调用csv_data_fusion.py中的CSVDataFusion类来完成数据融合处理
"""
import os
import sys
import time
from csv_data_fusion import CSVDataFusion


def print_header():
    """打印程序头部信息"""
    header = """
    ==================================================
            CSV雪票数据处理系统 - 数据融合模块
    ==================================================
    """
    print(header)


def print_footer():
    """打印程序尾部信息"""
    footer = """
    ==================================================
                    处理完成
    ==================================================
    """
    print(footer)


def main():
    """主函数"""
    try:
        # 打印头部信息
        print_header()
        print(f"程序启动时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
        
        # 创建数据融合实例
        data_fusion = CSVDataFusion()
        
        # 获取最新的CSV文件
        print("\n步骤1: 查找最新的CSV数据文件...")
        latest_csv = data_fusion.get_latest_csv_file()
        if not latest_csv:
            print("错误：未找到CSV文件，程序退出")
            sys.exit(1)
        
        print(f"找到CSV文件: {os.path.basename(latest_csv)}")
        print(f"文件路径: {latest_csv}")
        
        # 确定产品类型
        print("\n步骤2: 确定产品类型...")
        product_type = data_fusion.determine_product_type(latest_csv)
        print(f"产品类型: {product_type}")
        
        # 确定Excel文件路径
        desktop_path = os.path.expanduser("~/Desktop")
        if product_type == "太仓":
            excel_file = os.path.join(desktop_path, "太仓雪票统计.xlsx")
        elif product_type == "耀雪":
            excel_file = os.path.join(desktop_path, "耀雪雪票统计.xlsx")
        else:
            excel_file = os.path.join(desktop_path, "雪票统计.xlsx")
        
        output_file = os.path.join(desktop_path, "result.xlsx")
        
        # 检查Excel文件是否存在
        if not os.path.exists(excel_file):
            print(f"警告：Excel文件 {excel_file} 不存在")
            # 创建一个默认的Excel文件
            from openpyxl import Workbook
            wb = Workbook()
            ws = wb.active
            ws.title = "雪票统计"
            # 写入表头
            headers = ['日期', '姓名', '身份证号', '手机号']
            for col_idx, header in enumerate(headers, 1):
                ws.cell(row=1, column=col_idx, value=header)
            wb.save(excel_file)
            print(f"已创建默认Excel文件: {excel_file}")
        else:
            print(f"使用Excel文件: {excel_file}")
        
        # 加载表格1数据
        print("\n步骤3: 加载表格1数据...")
        if not data_fusion.load_table1_data(excel_file):
            print("错误：加载表格1数据失败，程序退出")
            sys.exit(1)
        
        # 加载表格2数据
        print("\n步骤4: 加载表格2数据...")
        if not data_fusion.load_table2_data(latest_csv):
            print("错误：加载表格2数据失败，程序退出")
            sys.exit(1)
        
        # 融合数据
        print("\n步骤5: 融合表格数据...")
        if not data_fusion.fuse_data():
            print("错误：融合数据失败，程序退出")
            sys.exit(1)
        
        # 生成Excel文件
        print("\n步骤6: 生成Excel结果文件...")
        if data_fusion.generate_excel(output_file):
            print(f"成功生成结果文件: {output_file}")
        else:
            print("错误：生成Excel文件失败！")
            sys.exit(1)
        
        # 打印完成信息
        print(f"\n程序结束时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
        print_footer()
        
    except Exception as e:
        print(f"程序运行出错: {str(e)}")
        import traceback
        traceback.print_exc()
        sys.exit(1)


if __name__ == '__main__':
    main()